<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>哈希函数</title>
</head>
<body>
<script>
    // 设计哈希函数
    function hashFunc(str, size) { //str为需要转的字符串，size为数组大小
        //这里是得到字符串的hashCode,和Java里的hashCode方法实现思路一样
        let hashCode = 0;
        for (let i = 0; i < str.length; i++) {
            hashCode = 37 * hashCode + str.charCodeAt(i);
        }

        //这里Java里的HashMap是： 取到hashCode之后右移16位再与自身进行异或(^)运算，
        // 再与数组长度减一进行按位与(&)运算等到要存的下标位置
        let index = hashCode % size;
        return index; //在哈希表中存储的下标位置
    }

    //测试一下
    console.log(hashFunc("我爱你", 16));
</script>
</body>
</html>